{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import yaml\n",
    "# Pulled from trunk on github (e67dc9f64dd787a9bc7294ee1141d3355fe2e831)\n",
    "config_path = None # pass config path\n",
    "cfg = yaml.safe_load(open(config_path))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m2024-11-04 19:40:24.313\u001b[0m | \u001b[1mINFO    \u001b[0m | \u001b[36metflow.utils\u001b[0m:\u001b[36minstantiate_model\u001b[0m:\u001b[36m137\u001b[0m - \u001b[1mLoading BaseFlow with args: {'network_type': 'TorchMDDynamics', 'hidden_channels': 160, 'num_layers': 20, 'num_rbf': 64, 'rbf_type': 'expnorm', 'trainable_rbf': True, 'activation': 'silu', 'neighbor_embedding': True, 'cutoff_lower': 0.0, 'cutoff_upper': 10.0, 'max_z': 100, 'node_attr_dim': 10, 'edge_attr_dim': 1, 'attn_activation': 'silu', 'num_heads': 8, 'distance_influence': 'both', 'reduce_op': 'sum', 'qk_norm': True, 'so3_equivariant': False, 'clip_during_norm': True, 'parity_switch': 'post_hoc', 'sigma': 0.1, 'prior_type': 'harmonic', 'interpolation_type': 'linear', 'optimizer_type': 'AdamW', 'lr': 0.0008, 'weight_decay': 1e-08, 'lr_scheduler_type': 'CosineAnnealingWarmupRestarts', 'first_cycle_steps': 375000, 'cycle_mult': 1.0, 'max_lr': 0.0005, 'min_lr': 1e-08, 'warmup_steps': 0, 'gamma': 0.05, 'last_epoch': -1, 'lr_scheduler_monitor': 'val/loss', 'lr_scheduler_interval': 'step', 'lr_scheduler_frequency': 1}\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<All keys matched successfully>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from etflow.utils import instantiate_model\n",
    "ckpt_path = None # pass ckpt path\n",
    "model = instantiate_model(cfg['model'], cfg['model_args'])\n",
    "model.load_state_dict(torch.load(ckpt_path)['state_dict'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.to('cuda');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Generate Conformation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[rank: 0] Seed set to 42\n",
      "/mnt/ps/home/CORP/nikhil.shenoy/projects/ETFlow/etflow/commons/utils.py:177: UserWarning: torch.sparse.SparseTensor(indices, values, shape, *, device=) is deprecated.  Please use torch.sparse_coo_tensor(indices, values, shape, dtype=, device=). (Triggered internally at /opt/conda/conda-bld/pytorch_1711403378171/work/torch/csrc/utils/tensor_new.cpp:618.)\n",
      "  bgraph_adj = torch.sparse.LongTensor(edge_index, edge_type, torch.Size([N, N]))\n"
     ]
    }
   ],
   "source": [
    "from etflow.commons.sample import batched_sampling\n",
    "from etflow.commons.featurization import MoleculeFeaturizer\n",
    "\n",
    "feat = MoleculeFeaturizer()\n",
    "smiles = 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C'\n",
    "data = feat.get_data_from_smiles(smiles)\n",
    "num_samples_to_generate = 8\n",
    "gen_position = batched_sampling(model, data, max_batch_size=8, num_samples=num_samples_to_generate, seed=42, device='cuda')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Visualize Conformation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import py3Dmol # might have to pip install this for viz\n",
    "from rdkit.Chem.Draw import IPythonConsole\n",
    "IPythonConsole.molSize = (600, 600)   # Change image size\n",
    "IPythonConsole.ipython_useSVG = True  # Change output to SVG\n",
    "IPythonConsole.ipython_3d = True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/3dmoljs_load.v0": "<div id=\"3dmolviewer_17307743737007632\"  style=\"position: relative; width: 400px; height: 400px;\">\n        <p id=\"3dmolwarning_17307743737007632\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason.  Please check your browser console for error messages.<br></p>\n        </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n  return new Promise((resolve, reject) => {\n    //this is to ignore the existence of requirejs amd\n    var savedexports, savedmodule;\n    if (typeof exports !== 'undefined') savedexports = exports;\n    else exports = {}\n    if (typeof module !== 'undefined') savedmodule = module;\n    else module = {}\n\n    var tag = document.createElement('script');\n    tag.src = uri;\n    tag.async = true;\n    tag.onload = () => {\n        exports = savedexports;\n        module = savedmodule;\n        resolve();\n    };\n  var firstScriptTag = document.getElementsByTagName('script')[0];\n  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n  $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.0/3Dmol-min.js');\n}\n\nvar viewer_17307743737007632 = null;\nvar warn = document.getElementById(\"3dmolwarning_17307743737007632\");\nif(warn) {\n    warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_17307743737007632 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_17307743737007632\"),{backgroundColor:\"white\"});\nviewer_17307743737007632.zoomTo();\n\tviewer_17307743737007632.removeAllModels();\n\tviewer_17307743737007632.addModel(\"\\n     RDKit          3D\\n\\n 24 25  0  0  0  0  0  0  0  0999 V2000\\n    2.6990   -0.0426    1.9738 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    1.7253   -0.6887    1.1217 N   0  0  0  0  0  0  0  0  0  0  0  0\\n    1.6744   -2.0004    0.7837 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.6810   -2.2878   -0.0169 N   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.0466   -1.0862   -0.2189 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.6845   -0.0783    0.4870 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.2296    1.2772    0.4697 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.7174    2.2130    1.0604 O   0  0  0  0  0  0  0  0  0  0  0  0\\n   -0.9000    1.4157   -0.3464 N   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.5616    0.4293   -1.0530 C   0  0  0  0  0  0  0  0  0  0  0  0\\n   -2.5493    0.6721   -1.7277 O   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.0596   -0.8588   -0.9815 N   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.6765   -1.9442   -1.7012 C   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.4918    2.7297   -0.4588 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    3.6979   -0.1920    1.5904 H   0  0  0  0  0  0  0  0  0  0  0  0\\n    2.4610    1.0221    2.0097 H   0  0  0  0  0  0  0  0  0  0  0  0\\n    2.6395   -0.4564    2.9980 H   0  0  0  0  0  0  0  0  0  0  0  0\\n    2.3692   -2.7117    1.1332 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -2.6821   -1.6129   -2.0118 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.0909   -2.1897   -2.6034 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.7180   -2.8165   -1.0595 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -2.5150    2.7297   -0.0831 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.5052    3.0499   -1.5014 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -0.8755    3.4276    0.1360 H   0  0  0  0  0  0  0  0  0  0  0  0\\n  1  2  1  0\\n  2  3  1  0\\n  3  4  2  0\\n  4  5  1  0\\n  5  6  2  0\\n  6  7  1  0\\n  7  8  2  0\\n  7  9  1  0\\n  9 10  1  0\\n 10 11  2  0\\n 10 12  1  0\\n 12 13  1  0\\n  9 14  1  0\\n  6  2  1  0\\n 12  5  1  0\\n  1 15  1  0\\n  1 16  1  0\\n  1 17  1  0\\n  3 18  1  0\\n 13 19  1  0\\n 13 20  1  0\\n 13 21  1  0\\n 14 22  1  0\\n 14 23  1  0\\n 14 24  1  0\\nM  END\\n\",\"sdf\");\n\tviewer_17307743737007632.setStyle({\"stick\": {}});\n\tviewer_17307743737007632.setBackgroundColor(\"0xeeeeee\");\n\tviewer_17307743737007632.zoomTo();\nviewer_17307743737007632.render();\n});\n</script>",
      "text/html": [
       "<div id=\"3dmolviewer_17307743737007632\"  style=\"position: relative; width: 400px; height: 400px;\">\n",
       "        <p id=\"3dmolwarning_17307743737007632\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason.  Please check your browser console for error messages.<br></p>\n",
       "        </div>\n",
       "<script>\n",
       "\n",
       "var loadScriptAsync = function(uri){\n",
       "  return new Promise((resolve, reject) => {\n",
       "    //this is to ignore the existence of requirejs amd\n",
       "    var savedexports, savedmodule;\n",
       "    if (typeof exports !== 'undefined') savedexports = exports;\n",
       "    else exports = {}\n",
       "    if (typeof module !== 'undefined') savedmodule = module;\n",
       "    else module = {}\n",
       "\n",
       "    var tag = document.createElement('script');\n",
       "    tag.src = uri;\n",
       "    tag.async = true;\n",
       "    tag.onload = () => {\n",
       "        exports = savedexports;\n",
       "        module = savedmodule;\n",
       "        resolve();\n",
       "    };\n",
       "  var firstScriptTag = document.getElementsByTagName('script')[0];\n",
       "  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
       "});\n",
       "};\n",
       "\n",
       "if(typeof $3Dmolpromise === 'undefined') {\n",
       "$3Dmolpromise = null;\n",
       "  $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.0/3Dmol-min.js');\n",
       "}\n",
       "\n",
       "var viewer_17307743737007632 = null;\n",
       "var warn = document.getElementById(\"3dmolwarning_17307743737007632\");\n",
       "if(warn) {\n",
       "    warn.parentNode.removeChild(warn);\n",
       "}\n",
       "$3Dmolpromise.then(function() {\n",
       "viewer_17307743737007632 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_17307743737007632\"),{backgroundColor:\"white\"});\n",
       "viewer_17307743737007632.zoomTo();\n",
       "\tviewer_17307743737007632.removeAllModels();\n",
       "\tviewer_17307743737007632.addModel(\"\\n     RDKit          3D\\n\\n 24 25  0  0  0  0  0  0  0  0999 V2000\\n    2.6990   -0.0426    1.9738 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    1.7253   -0.6887    1.1217 N   0  0  0  0  0  0  0  0  0  0  0  0\\n    1.6744   -2.0004    0.7837 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.6810   -2.2878   -0.0169 N   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.0466   -1.0862   -0.2189 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.6845   -0.0783    0.4870 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.2296    1.2772    0.4697 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    0.7174    2.2130    1.0604 O   0  0  0  0  0  0  0  0  0  0  0  0\\n   -0.9000    1.4157   -0.3464 N   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.5616    0.4293   -1.0530 C   0  0  0  0  0  0  0  0  0  0  0  0\\n   -2.5493    0.6721   -1.7277 O   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.0596   -0.8588   -0.9815 N   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.6765   -1.9442   -1.7012 C   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.4918    2.7297   -0.4588 C   0  0  0  0  0  0  0  0  0  0  0  0\\n    3.6979   -0.1920    1.5904 H   0  0  0  0  0  0  0  0  0  0  0  0\\n    2.4610    1.0221    2.0097 H   0  0  0  0  0  0  0  0  0  0  0  0\\n    2.6395   -0.4564    2.9980 H   0  0  0  0  0  0  0  0  0  0  0  0\\n    2.3692   -2.7117    1.1332 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -2.6821   -1.6129   -2.0118 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.0909   -2.1897   -2.6034 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.7180   -2.8165   -1.0595 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -2.5150    2.7297   -0.0831 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -1.5052    3.0499   -1.5014 H   0  0  0  0  0  0  0  0  0  0  0  0\\n   -0.8755    3.4276    0.1360 H   0  0  0  0  0  0  0  0  0  0  0  0\\n  1  2  1  0\\n  2  3  1  0\\n  3  4  2  0\\n  4  5  1  0\\n  5  6  2  0\\n  6  7  1  0\\n  7  8  2  0\\n  7  9  1  0\\n  9 10  1  0\\n 10 11  2  0\\n 10 12  1  0\\n 12 13  1  0\\n  9 14  1  0\\n  6  2  1  0\\n 12  5  1  0\\n  1 15  1  0\\n  1 16  1  0\\n  1 17  1  0\\n  3 18  1  0\\n 13 19  1  0\\n 13 20  1  0\\n 13 21  1  0\\n 14 22  1  0\\n 14 23  1  0\\n 14 24  1  0\\nM  END\\n\",\"sdf\");\n",
       "\tviewer_17307743737007632.setStyle({\"stick\": {}});\n",
       "\tviewer_17307743737007632.setBackgroundColor(\"0xeeeeee\");\n",
       "\tviewer_17307743737007632.zoomTo();\n",
       "viewer_17307743737007632.render();\n",
       "});\n",
       "</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAIAAAAxBA+LAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1xTV+MG8Cfs4QDEAU5Qi3vhqrhXtaK1KtZqnVSo+ir258JVbetArXUPHK2jVYutVau1dVFw1YETcQIWUUBRlqCM5P7+CAW0joAkJ8l9vh//uISc5OF9K4/n5N57FJIkgYiISK5MRAcgIiISiUVIRESyxiIkIiJZYxESEZGssQiJiEjWWIRERCRrLEIiIpI1FiEREckai5CIiGSNRUhERLLGIiQiIlljERIRkayxCImISNZYhEREJGssQiIikjUWIRERyRqLkIiIZI1FSEREssYiJCIiWWMREhGRrLEIiYhI1liEREQkayxCIiKSNRYhERHJGouQiIhkjUVIRESyxiIkIiJZYxESEZGssQiJiEjWWIRERCRrLEIiIpI1FiEREckai5CIiGTNTHQA0jv//PPPuXPn1Mf169d/5513NBmVk5OzZ88e9bGDg0OHDh20lY+IqFgpJEkSnYH0y6ZNm4YPH64+DggImDJliiajUlNTS5curT5u3rz56dOntZWPiKhYcWmUiIhkjUVIRESyxiIkIiJZYxESEZGssQiJiEjWWIRERCRrLEIiIpI1FiEREckai5CIiGSNRUhERLLGe43S69y4cePAgQOaPDMjI0PbYYiItIFFSK/z/ffff//996JTEBFpEZdGiYhI1jgjpNextbW1sbHR5JmSJCUmJmo7DxFRsWMR0uvMnDmzCNswEREZEC6NEhGRrLEIiYhI1liEREQkayxCIiKSNRYhERHJGouQiIhkjUVIRESyxiIkIiJZYxESEZGssQiJiEjWWIRERCRrLEJ6kUKheOmxNkYREQmnkCRJdAYiIiJhOCMkAAgJCeE/iYhInliEwmRmZtr/q127dpoP/Oijj/IGxsTEvH2S7du3d+jQYciQIW//UkREBof7EQojSVJycrL6ODU1VfOBaWlpeQOVSuVbxggJCRk+fLgkSe7u7m/5UkREhogzQlmLiIj48MMPMzMzJ0yYMH78eNFxiIgEYBHK1/3797t3756UlOTl5bVw4ULRcYiIxGARylRqamqPHj1iYmLatGmzZcsWExP+l0BEMsVff3KUnZ3dr1+/ixcv1q5de/fu3VZWVqITEREJwyKUHUmSRo4ceejQIScnpwMHDjg4OIhOREQkEotQdqZPn7558+aSJUvu37+/atWqouMQEQnGIpSX9evXz58/39zcfOfOnY0bNxYdh4hIPBahjOzfv3/06NEKhSIwMPC9994THYeISC/wgnq5OHfu3EcffZSTk/PVV18NHz5cdBwiIn3BGaEsREVFeXp6pqene3t7z5w5U3QcIiI9whmhXrh69WrFihU1fPKjR48K9eKJiYndu3dPSEjo3r372rVrC5+OiMiYsQj1QnZ29v3797Xxyk+fPu3Vq9fNmzfd3d2DgoLMzPj/OBHRc7g0asyUSuWgQYNOnTrl4uKyb9++EiVKiE5ERKR3OD/QC66urkuWLNHwyV999VVYWJgmzxw/fvyvv/5apkyZAwcOVKhQ4S0CEhEZLRahXihVqlSvXr00fLKGn/PNmzdv5cqVVlZWe/bscXNze4t0RETGjEujxmnHjh0zZswwMTH54YcfPDw8RMchItJfnBEaob/++mvYsGGSJC1ZsqRv376i4xAR6TXOCI3N1atX1XvtTpo0yc/PT3QcIiJ9xyI0Kvfu3evevXtycnL//v0DAgJExyEiMgAsQuOh3mv37t27bdu25V67REQa4u9KI5Gdnd23b99Lly7VqVNn9+7dlpaWohMRERkGFqExkCTJ29v78OHDzs7Ov//+u729vehEREQGg0VoDPz9/bdu3cq9domIikBfLp948uRJdHS0+tjR0dHJyUnDgREREUqlEoC5uXmtWrW0lU+PBQYGLly40Nzc/Oeff27UqJHoOEREBkZfivDUqVNdu3ZVH48dO3b58uUaDmzRosWTJ08AVKxYMTY2Vlv59NXRo0fHjBmjUCjWr1+f9z8gERFpTl+KkIpm3LhxSqVy7ty5Q4cOFZ2FiMggsQiFMTc337hxo/q4TJkymg/8/PPP+/Xr9+DBg/nz56empo4cOXLatGnayUhEZPxYhMKYmpqOGDGiCAO7dOmSmJjYqlUr9YWDq1evLvZsRETywbNGDY96r91bt241bdr0p59+4l67RERvg79D9VdKSsrZs2fNzc3btWuX96BSqRw4cOCpU6dcXV337dtna2srMCERkRFgEeqv6OjoLl26NGzY8OLFi3kP+vn57d69u0yZMr///nv58uUFxiMiMg5cGtVfNjY2ADIyMvIemTNnzqpVq6ytrffu3cu9domIigWL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8PDwly6r2tvbF5w41qlTp1atWrJdVmURGrDSpUuPHXs6MLDuxo2KOXNEpyGtGT9+/MOHDzt06DBjxowZM2Zs3bp18uTJZ86ceffddwcNGrR48eKyZcuKzkiaio+PHzVq1O7duwF079593bp1lSpVUn/r9u3b0LgIX8rS0rJu3bp169Yt+OB/l1UjIiKSkpJOnDhx4sSJvKeZm5tXrlw5b9aoLkgXFxdZLDxIZMhCQiRAqlhRyskRHYW04+jRowqFwtra+vbt23kPpqWlzZo1y8LCAoC9vf3SpUuzs7MFhiQNBQUFOTg4ALCzswsMDHzhu3379gWwY8cObcfIzs6OjIw8dOhQYGDglClTPD09XV1dTUxechGBnZ2du7u7l5fXlClTNm/efO7cudTU1EK91zfffJP3aurdAjQRFRWVN0q9GZlWcUZo2Nq2Ra1auH4dBw7A01N0GipuT58+HTlypCRJs2fPrl69et7jJUqUmD179sCBA8ePH3/gwIHx48evXbt22bJlXbt2FZiWXiMuLm7UqFF79uwB8P777wcGBuZNBPPcunULbzcj1NCrllXv3btXcOIYHh4eHx+vybKqm5ubmZkht4m2m5a0LSBAAqTevUXnIC1QXyzRoEGDrKysVz1n7969eb/RPD0979y5o8uEpInXTwTVVCqVra0tgOTkZB3He42EhIRjx45t2LBhypQpH374YZ06dSwtLf/bIxYWFrVq1frggw8mTZq0fv36kJCQtLQ09SsYxIxQIXFbOwOXkIDKlSFJiImBk5PoNFR8Ll++3LRpU6VSefz48f+eT19QVlbWmjVrZsyY8eTJExsbm0mTJvn7+/PqUn0QFxfn6+v722+/AejRo0dgYGDFihVf+sx79+5VqlSpfPny+n8fmfv37xc8HyciIuLOnTsqlargcw4ePNilSxcAixcvnjhxovrBxYsXDxo0SJO3iImJyTsRrHv37r///nux/gT/oe2mJR348EMJkAICROeg4qNUKtXl9/nnn2s4JDY2dvDgwepTGypXrrx582atJqQ3CgoKsre3x2sngnmCg4MBeHh46CZb8crIyLh06dLOnTvnzp07dOjQli1bxsTEqL9VcEZYNDqYEbIIjcG+fRIgVa8uqVSio1AxWbJkCYAqVarkLTFp6K+//mrQoIH6N0jHjh3Dw8O1lJBe486dO+r5EABP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",
      "image/svg+xml": [
       "<?xml version='1.0' encoding='iso-8859-1'?>\n",
       "<svg version='1.1' baseProfile='full'\n",
       "              xmlns='http://www.w3.org/2000/svg'\n",
       "                      xmlns:rdkit='http://www.rdkit.org/xml'\n",
       "                      xmlns:xlink='http://www.w3.org/1999/xlink'\n",
       "                  xml:space='preserve'\n",
       "width='600px' height='600px' viewBox='0 0 600 600'>\n",
       "<!-- END OF HEADER -->\n",
       "<rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='600.0' height='600.0' x='0.0' y='0.0'> </rect>\n",
       "<path class='bond-0 atom-0 atom-1' d='M 476.3,328.0 L 444.1,349.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-0 atom-0 atom-1' d='M 444.1,349.3 L 412.0,370.7' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 397.3,397.5 L 395.5,441.5' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-1 atom-1 atom-2' d='M 395.5,441.5 L 393.8,485.5' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 393.8,485.5 L 360.9,495.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 360.9,495.0 L 328.0,504.6' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 379.1,474.0 L 351.4,482.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-2 atom-2 atom-3' d='M 351.4,482.0 L 323.8,490.0' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 304.7,491.1 L 283.8,451.6' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-3 atom-3 atom-4' d='M 283.8,451.6 L 262.9,412.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 262.9,412.0 L 314.2,330.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-4 atom-4 atom-5' d='M 280.4,412.7 L 319.2,351.4' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-5 atom-5 atom-6' d='M 314.2,330.9 L 277.6,221.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 281.0,231.8 L 297.5,200.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 297.5,200.0 L 314.1,168.2' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 269.6,220.8 L 284.1,193.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-6 atom-6 atom-7' d='M 284.1,193.0 L 300.7,161.1' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-7 atom-6 atom-8' d='M 277.6,221.8 L 239.2,217.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-7 atom-6 atom-8' d='M 239.2,217.1 L 200.8,212.4' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-8 atom-8 atom-9' d='M 175.0,228.2 L 154.3,259.1' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-8 atom-8 atom-9' d='M 154.3,259.1 L 133.5,290.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-9 atom-10' d='M 138.0,283.3 L 105.1,275.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-9 atom-10' d='M 105.1,275.3 L 72.2,267.2' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-9 atom-10' d='M 136.9,298.7 L 101.5,290.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-9 atom-9 atom-10' d='M 101.5,290.0 L 68.6,281.9' style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-9 atom-11' d='M 133.5,290.0 L 150.3,333.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-10 atom-9 atom-11' d='M 150.3,333.1 L 167.1,376.2' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-11 atom-11 atom-12' d='M 164.0,411.2 L 144.1,446.1' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-11 atom-11 atom-12' d='M 144.1,446.1 L 124.3,481.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-12 atom-8 atom-13' d='M 178.9,193.2 L 159.0,149.1' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-12 atom-8 atom-13' d='M 159.0,149.1 L 139.1,105.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-13 atom-5 atom-1' d='M 314.2,330.9 L 349.0,351.3' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-13 atom-5 atom-1' d='M 349.0,351.3 L 383.9,371.7' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-14 atom-11 atom-4' d='M 188.0,396.6 L 225.4,404.3' style='fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-14 atom-11 atom-4' d='M 225.4,404.3 L 262.9,412.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-15 atom-0 atom-14' d='M 476.3,328.0 L 542.2,337.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-16 atom-0 atom-15' d='M 476.3,328.0 L 461.0,259.9' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-17 atom-0 atom-16' d='M 476.3,328.0 L 474.0,343.8' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-18 atom-2 atom-17' d='M 393.8,485.5 L 435.3,528.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-19 atom-12 atom-18' d='M 124.3,481.0 L 57.8,459.1' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-20 atom-12 atom-19' d='M 124.3,481.0 L 157.0,494.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-21 atom-12 atom-20' d='M 124.3,481.0 L 121.8,533.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-22 atom-13 atom-21' d='M 139.1,105.0 L 71.2,105.0' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-23 atom-13 atom-22' d='M 139.1,105.0 L 138.8,96.7' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path class='bond-24 atom-13 atom-23' d='M 139.1,105.0 L 174.3,65.2' style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1' />\n",
       "<path d='M 279.4,227.3 L 277.6,221.8 L 275.7,221.6' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path d='M 134.5,288.5 L 133.5,290.0 L 134.3,292.2' style='fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;' />\n",
       "<path class='atom-1' d='M 391.7 365.8\n",
       "L 401.0 380.8\n",
       "Q 401.9 382.3, 403.4 385.0\n",
       "Q 404.8 387.7, 404.9 387.8\n",
       "L 404.9 365.8\n",
       "L 408.7 365.8\n",
       "L 408.7 394.2\n",
       "L 404.8 394.2\n",
       "L 394.8 377.8\n",
       "Q 393.7 375.8, 392.4 373.6\n",
       "Q 391.2 371.4, 390.9 370.8\n",
       "L 390.9 394.2\n",
       "L 387.2 394.2\n",
       "L 387.2 365.8\n",
       "L 391.7 365.8\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-3' d='M 307.7 494.5\n",
       "L 316.9 509.5\n",
       "Q 317.9 511.0, 319.3 513.6\n",
       "Q 320.8 516.3, 320.9 516.5\n",
       "L 320.9 494.5\n",
       "L 324.7 494.5\n",
       "L 324.7 522.8\n",
       "L 320.8 522.8\n",
       "L 310.8 506.4\n",
       "Q 309.7 504.5, 308.4 502.3\n",
       "Q 307.2 500.1, 306.9 499.4\n",
       "L 306.9 522.8\n",
       "L 303.2 522.8\n",
       "L 303.2 494.5\n",
       "L 307.7 494.5\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-7' d='M 303.9 146.6\n",
       "Q 303.9 139.8, 307.2 136.0\n",
       "Q 310.6 132.2, 316.9 132.2\n",
       "Q 323.1 132.2, 326.5 136.0\n",
       "Q 329.9 139.8, 329.9 146.6\n",
       "Q 329.9 153.5, 326.5 157.4\n",
       "Q 323.1 161.3, 316.9 161.3\n",
       "Q 310.6 161.3, 307.2 157.4\n",
       "Q 303.9 153.6, 303.9 146.6\n",
       "M 316.9 158.1\n",
       "Q 321.2 158.1, 323.5 155.2\n",
       "Q 325.9 152.3, 325.9 146.6\n",
       "Q 325.9 141.1, 323.5 138.3\n",
       "Q 321.2 135.4, 316.9 135.4\n",
       "Q 312.5 135.4, 310.2 138.2\n",
       "Q 307.9 141.0, 307.9 146.6\n",
       "Q 307.9 152.4, 310.2 155.2\n",
       "Q 312.5 158.1, 316.9 158.1\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-8' d='M 180.5 196.5\n",
       "L 189.8 211.5\n",
       "Q 190.7 213.0, 192.2 215.7\n",
       "Q 193.6 218.4, 193.7 218.5\n",
       "L 193.7 196.5\n",
       "L 197.5 196.5\n",
       "L 197.5 224.9\n",
       "L 193.6 224.9\n",
       "L 183.6 208.5\n",
       "Q 182.5 206.5, 181.2 204.3\n",
       "Q 180.0 202.1, 179.7 201.5\n",
       "L 179.7 224.9\n",
       "L 176.0 224.9\n",
       "L 176.0 196.5\n",
       "L 180.5 196.5\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-10' d='M 41.0 270.6\n",
       "Q 41.0 263.8, 44.4 260.0\n",
       "Q 47.8 256.2, 54.0 256.2\n",
       "Q 60.3 256.2, 63.7 260.0\n",
       "Q 67.0 263.8, 67.0 270.6\n",
       "Q 67.0 277.5, 63.6 281.4\n",
       "Q 60.2 285.3, 54.0 285.3\n",
       "Q 47.8 285.3, 44.4 281.4\n",
       "Q 41.0 277.5, 41.0 270.6\n",
       "M 54.0 282.1\n",
       "Q 58.4 282.1, 60.7 279.2\n",
       "Q 63.0 276.3, 63.0 270.6\n",
       "Q 63.0 265.0, 60.7 262.2\n",
       "Q 58.4 259.4, 54.0 259.4\n",
       "Q 49.7 259.4, 47.4 262.2\n",
       "Q 45.0 265.0, 45.0 270.6\n",
       "Q 45.0 276.3, 47.4 279.2\n",
       "Q 49.7 282.1, 54.0 282.1\n",
       "' fill='#FF0000'/>\n",
       "<path class='atom-11' d='M 167.6 379.5\n",
       "L 176.9 394.5\n",
       "Q 177.8 396.0, 179.3 398.7\n",
       "Q 180.8 401.4, 180.9 401.5\n",
       "L 180.9 379.5\n",
       "L 184.6 379.5\n",
       "L 184.6 407.8\n",
       "L 180.8 407.8\n",
       "L 170.8 391.4\n",
       "Q 169.6 389.5, 168.4 387.3\n",
       "Q 167.2 385.1, 166.8 384.4\n",
       "L 166.8 407.8\n",
       "L 163.2 407.8\n",
       "L 163.2 379.5\n",
       "L 167.6 379.5\n",
       "' fill='#0000FF'/>\n",
       "<path class='atom-14' d='M 545.5 325.9\n",
       "L 549.4 325.9\n",
       "L 549.4 337.9\n",
       "L 563.9 337.9\n",
       "L 563.9 325.9\n",
       "L 567.7 325.9\n",
       "L 567.7 354.2\n",
       "L 563.9 354.2\n",
       "L 563.9 341.1\n",
       "L 549.4 341.1\n",
       "L 549.4 354.2\n",
       "L 545.5 354.2\n",
       "L 545.5 325.9\n",
       "' fill='#000000'/>\n",
       "<path class='atom-15' d='M 446.0 228.2\n",
       "L 449.9 228.2\n",
       "L 449.9 240.2\n",
       "L 464.4 240.2\n",
       "L 464.4 228.2\n",
       "L 468.2 228.2\n",
       "L 468.2 256.5\n",
       "L 464.4 256.5\n",
       "L 464.4 243.4\n",
       "L 449.9 243.4\n",
       "L 449.9 256.5\n",
       "L 446.0 256.5\n",
       "L 446.0 228.2\n",
       "' fill='#000000'/>\n",
       "<path class='atom-16' d='M 460.4 347.1\n",
       "L 464.2 347.1\n",
       "L 464.2 359.2\n",
       "L 478.7 359.2\n",
       "L 478.7 347.1\n",
       "L 482.6 347.1\n",
       "L 482.6 375.5\n",
       "L 478.7 375.5\n",
       "L 478.7 362.4\n",
       "L 464.2 362.4\n",
       "L 464.2 375.5\n",
       "L 460.4 375.5\n",
       "L 460.4 347.1\n",
       "' fill='#000000'/>\n",
       "<path class='atom-17' d='M 438.7 528.6\n",
       "L 442.5 528.6\n",
       "L 442.5 540.6\n",
       "L 457.0 540.6\n",
       "L 457.0 528.6\n",
       "L 460.8 528.6\n",
       "L 460.8 556.9\n",
       "L 457.0 556.9\n",
       "L 457.0 543.8\n",
       "L 442.5 543.8\n",
       "L 442.5 556.9\n",
       "L 438.7 556.9\n",
       "L 438.7 528.6\n",
       "' fill='#000000'/>\n",
       "<path class='atom-18' d='M 32.3 440.2\n",
       "L 36.1 440.2\n",
       "L 36.1 452.2\n",
       "L 50.6 452.2\n",
       "L 50.6 440.2\n",
       "L 54.5 440.2\n",
       "L 54.5 468.5\n",
       "L 50.6 468.5\n",
       "L 50.6 455.4\n",
       "L 36.1 455.4\n",
       "L 36.1 468.5\n",
       "L 32.3 468.5\n",
       "L 32.3 440.2\n",
       "' fill='#000000'/>\n",
       "<path class='atom-19' d='M 160.3 486.6\n",
       "L 164.1 486.6\n",
       "L 164.1 498.6\n",
       "L 178.6 498.6\n",
       "L 178.6 486.6\n",
       "L 182.5 486.6\n",
       "L 182.5 514.9\n",
       "L 178.6 514.9\n",
       "L 178.6 501.8\n",
       "L 164.1 501.8\n",
       "L 164.1 514.9\n",
       "L 160.3 514.9\n",
       "L 160.3 486.6\n",
       "' fill='#000000'/>\n",
       "<path class='atom-20' d='M 109.8 537.0\n",
       "L 113.7 537.0\n",
       "L 113.7 549.0\n",
       "L 128.2 549.0\n",
       "L 128.2 537.0\n",
       "L 132.0 537.0\n",
       "L 132.0 565.3\n",
       "L 128.2 565.3\n",
       "L 128.2 552.2\n",
       "L 113.7 552.2\n",
       "L 113.7 565.3\n",
       "L 109.8 565.3\n",
       "L 109.8 537.0\n",
       "' fill='#000000'/>\n",
       "<path class='atom-21' d='M 45.7 90.8\n",
       "L 49.6 90.8\n",
       "L 49.6 102.9\n",
       "L 64.1 102.9\n",
       "L 64.1 90.8\n",
       "L 67.9 90.8\n",
       "L 67.9 119.1\n",
       "L 64.1 119.1\n",
       "L 64.1 106.1\n",
       "L 49.6 106.1\n",
       "L 49.6 119.1\n",
       "L 45.7 119.1\n",
       "L 45.7 90.8\n",
       "' fill='#000000'/>\n",
       "<path class='atom-22' d='M 127.0 65.1\n",
       "L 130.8 65.1\n",
       "L 130.8 77.1\n",
       "L 145.3 77.1\n",
       "L 145.3 65.1\n",
       "L 149.1 65.1\n",
       "L 149.1 93.4\n",
       "L 145.3 93.4\n",
       "L 145.3 80.3\n",
       "L 130.8 80.3\n",
       "L 130.8 93.4\n",
       "L 127.0 93.4\n",
       "L 127.0 65.1\n",
       "' fill='#000000'/>\n",
       "<path class='atom-23' d='M 177.6 34.7\n",
       "L 181.5 34.7\n",
       "L 181.5 46.7\n",
       "L 195.9 46.7\n",
       "L 195.9 34.7\n",
       "L 199.8 34.7\n",
       "L 199.8 63.0\n",
       "L 195.9 63.0\n",
       "L 195.9 49.9\n",
       "L 181.5 49.9\n",
       "L 181.5 63.0\n",
       "L 177.6 63.0\n",
       "L 177.6 34.7\n",
       "' fill='#000000'/>\n",
       "</svg>\n"
      ],
      "text/html": [],
      "text/plain": [
       "<rdkit.Chem.rdchem.Mol at 0x15546cf22e30>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# attach it to the mol\n",
    "from etflow.commons.featurization import get_mol_from_smiles\n",
    "from etflow.commons.covmat import set_rdmol_positions\n",
    "\n",
    "# Generate conformer\n",
    "mol = get_mol_from_smiles(smiles)\n",
    "gen_idx = 0 # 0th conformer generated\n",
    "mol = set_rdmol_positions(mol, gen_position[gen_idx])\n",
    "mol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "etflow",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
